home *** CD-ROM | disk | FTP | other *** search
/ PC Elektro 3 / PC-Elektro-3-cd1.bin / KBan 2.0 / KBANSRC.LZH / SRC / PROG / NETLIST / NILIST.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-23  |  2.9 KB  |  86 lines

  1. // the declaration of class NET_ITEM_LIST
  2. // Copyright (C) 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
  3.  
  4. #ifndef _NILIST_H_
  5. #define _NILIST_H_
  6.  
  7. #include <list>
  8. #include "../kbandata/kbandata.h"
  9. #include "netitem.h"
  10.  
  11. class NET_ITEM_LIST : public std::list<NET_ITEM> {
  12.   void collect_primitive_pin_element(PIN_ELEMENT& elem, uint layer_number) {
  13.     NET_ITEM net_item(layer_number, elem, &elem);
  14.     push_back(net_item);
  15.   }
  16.   void collect_primitive_pin_list(PIN_LIST& list, uint layer_number) {
  17.     PIN_LIST::iterator i;
  18.     TRAVERSE(list, i) {
  19.       collect_primitive_pin_element(*i, layer_number);
  20.     }
  21.   }
  22.   void collect_primitive_line_element(LINE_ELEMENT& elem, uint layer_number) {
  23.     NET_ITEM net_item(layer_number, elem);
  24.     push_back(net_item);
  25.   }
  26.   void collect_primitive_line_list(LINE_LIST& list, uint layer_number) {
  27.     LINE_LIST::iterator i;
  28.     TRAVERSE(list, i) {
  29.       collect_primitive_line_element(*i, layer_number);
  30.     }
  31.   }
  32.   void collect_primitive_layer(LAYER& layer, uint layer_number) {
  33.     collect_primitive_pin_list (layer.pin_list() , layer_number);
  34.     collect_primitive_line_list(layer.line_list(), layer_number);
  35.   }
  36.   void collect_primitive(PRIMITIVE& primitive) {
  37.     for(uint i = 0; i < LAYER_NUMBER; i++) {
  38.       collect_primitive_layer(primitive.layer(i), i);
  39.     }
  40.   }
  41.   void collect_component_pin_element(PIN_ELEMENT& elem, const XY& ac, uint layer_number) {
  42.     PIN_ELEMENT& elem_shifted = elem.shift(ac);
  43.     NET_ITEM net_item(layer_number, elem_shifted, &elem);
  44.     push_back(net_item);
  45.   }
  46.   void collect_component_pin_list(PIN_LIST& list, const XY& ac, uint layer_number) {
  47.     PIN_LIST::iterator i;
  48.     TRAVERSE(list, i) {
  49.       collect_component_pin_element(*i, ac, layer_number);
  50.     }
  51.   }
  52.   void collect_component_line_element(LINE_ELEMENT& elem, const XY& ac, uint layer_number) {
  53.     LINE_ELEMENT& elem_shifted = elem.shift(ac);
  54.     NET_ITEM net_item(layer_number, elem_shifted);
  55.     push_back(net_item);
  56.   }
  57.   void collect_component_line_list(LINE_LIST& list, const XY& ac, uint layer_number) {
  58.     LINE_LIST::iterator i;
  59.     TRAVERSE(list, i) {
  60.       collect_component_line_element(*i, ac, layer_number);
  61.     }
  62.   }
  63.   void collect_component_layer(LAYER& layer, const XY& ac, uint layer_number) {
  64.     collect_component_pin_list (layer.pin_list() , ac, layer_number);
  65.     collect_component_line_list(layer.line_list(), ac, layer_number);
  66.   }
  67.   void collect_component_element(COMPONENT_ELEMENT& elem) {
  68.     for(uint i = 0; i < LAYER_NUMBER; i++) {
  69.       collect_component_layer(elem.layer(i), elem.ac(), i);
  70.     }
  71.   }
  72.   void collect_component_list(COMPONENT_LIST& list) {
  73.     COMPONENT_LIST::iterator i;
  74.     TRAVERSE(list, i) {
  75.       collect_component_element(*i);
  76.     }
  77.   }
  78. public:
  79.   void collect_kban_data(KBAN_DATA& kban_data) {
  80.     collect_primitive     (kban_data.primitive()     );
  81.     collect_component_list(kban_data.component_list());
  82.   }
  83. };
  84.  
  85. #endif /* _NILIST_H_ */
  86.